0 IFX=0THENX=1: LOAD"SHELL-METZNER.O",8,1 1 NN=100:DIMA$(NN+1) 3 : 5 GOSUB10000 10 GOTO20000 15 : 19 REM SHELL 20 GOSUB500 : REM __ SET ARRAY 25 GOSUB1000 : REM __ SET TIME = 00 30 G=INT(NN/2) 40 N=0:FORI=1TONN-G 50 IFA$(I)>A$(I+G)THENT$=A$(I):A$(I)=A$(I+G):A$(I+G)=T$:N=1:POKE53280,RND(1)*15 60 NEXTI:IFN=1THEN40 70 G=INT(G/2):IFG>=1THEN40 80 GOSUB2000 : REM __ PRINT TIME 87 RETURN 88 : 90 REM MODIFIED INSERTION 92 GOSUB500 : REM __ SET ARRAY 95 GOSUB1000 : REM __ SET TIME= 00 100 FORX=0TONN-1 110 FORY=X+1TONN 120 IFA$(X)>A$(Y)THENT$=A$(X):A$(X)=A$(Y):A$(Y)=T$:POKE53280,RND(1)*15 130 NEXTY:NEXTX 140 GOSUB2000 : REM __ PRINT TIME 150 RETURN 155 : 200 REM SHELL/METZNER SORT 204 GOSUB 500 : REM __ SET ARRAY 205 GOSUB 1000 : REM __ SET TIME = 00 210 S=NN 220 Z=0 230 S=INT((S+1)/2) 240 FORI=1TONN-S 250 IFA$(I)<=A$(I+S)THEN300 260 T$=A$(I) 270 A$(I)=A$(I+S) 280 A$(I+S)=T$ 290 Z=1:POKE53280,RND(1)*15 300 NEXTI 320 IF(Z=1)OR(S>1)THEN220 330 GOSUB2000 : REM __ PRINT TIME 340 RETURN 350 : 360 : 400 REM M/L SHELL METZNER 410 GOSUB500 : REM __ SET ARRAY 420 GOSUB1000 : REM __ SET TIME=00 430 SYS49152A$(0): REM ___ SORT 440 GOSUB2000 : REM __ PRINT TIME 450 RETURN 460 : 470 : 500 PRINT"[147]BEFORE :":PRINT:FORX=0TONN+1:A$(X)=CHR$(65+RND(1)*26):PRINTA$(X);: 505 NEXT:PRINT:PRINT:RETURN 510 : 1000 PRINT"SORTING...":TI$="000000" 1010 RETURN 1020 : 2000 PRINT"AFTER :":PRINT:FORX=1TONN:PRINTA$(X);:NEXT:PRINT:PRINT 2001 T=INT(TI/60) 2005 PRINT"IT TOOK"T"SECONDS";:IFT<2THENPRINT"[157] [157]";: 2006 PRINT" TO SORT"NN"ELEMENTS." 2010 PRINT" " 2020 POKE198,0:WAIT198,1:POKE198,0 2030 RETURN 10000 PRINT"[147]"SPC(11)"SORT COMPARISON":POKE53281,0:POKE53280,5 10002 PRINTSPC(17)"BY" 10004 PRINTSPC(12)"ALAN GARDNER" 10006 PRINT"LOADSTAR IS NOT PUBLIC DOMAIN, BUT FEEL" 10008 PRINT"FEEL FREE TO USE ANY OF THE SORT " 10010 PRINT"ROUTINES FOUND IN THIS PROGRAM IN YOUR" 10012 PRINT"OWN PROGRAMS." 10020 PRINT" PRESS A KEY TO CONTINUE" 10030 POKE198,0:WAIT198,1:POKE198,0 10040 RETURN 20000 REM MENU/SELECTION 20010 PRINT"[147] *** MENU ***" 20020 PRINT" 1. MODIFIED INSERTION" 20030 PRINT" 2. SHELL SORT" 20040 PRINT" 3. SHELL-METZNER SORT" 20050 PRINT" 4. MACHINE-LANGUAGE SHELL-METZNER" 20052 PRINT" 5. EXIT PROGRAM" 20060 PRINT"WHICH ?"; 20070 POKE198,0:WAIT198,1:GETZ$: Z=VAL(Z$) 20080 IFZ$=""ORVAL(Z$)=0ORZ<0ORZ>5 THEN20070 20090 ONZGOSUB90,19,200,400,63000 20100 GOTO20000 63000 REM CONNECT BACK TO L.S. 63010 PRINT"[147]LOAD"CHR$(34)"PAYLOAD"CHR$(34)",8":PRINT"RUN" 63020 POKE631,13:POKE632,13:POKE198,2: END